<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>具名插槽的使用2</title>
</head>
<body>
    <!-- 
        1. 当一个组件的结构比较复杂 分不同的结构来展示，此时就可以使用命名插槽
     * 2. 在使用子组件的时候 在子组件内使用template包裹结构样式 并给template加一个v-slot
     * 3. v-slot:名称可以简写成 #名称
     * 4. 这样的话，可以大大增强组件的可复用性
     -->
  <div id="app">
    <h1>vue的例子</h1>
    <p>{{msg}}</p>
    <hr>
    <son>
        <template v-slot:header>
            <p><span>提示</span><button>X</button></p>
        </template>
        <template>
            <p>你真的要删除当前的数据吗？</p>
        </template>
        <template #footer>
             <div>
                 <button>取消</button>
                 <button>确定</button>
             </div>
        </template>
    </son>
    <hr>
    <son>
        <template v-slot:header>
            <p><span>警告</span><button>X</button></p>
        </template>
        <template>
            <p>删除此条数据不可恢复，真的要删除吗？</p>
        </template>
        <template #footer>
            <div>
                <button>真的删除</button>
            </div>
        </template>
    </son>
  </div>
  <script src="./js/vue.js"></script>
  <script>
    Vue.config.productionTip = false; // 关闭生产提示
    Vue.component('son',{
        template:`<div>
              <h2>这是一个子组件</h2>
              <slot name="header"></slot>
              <slot></slot>
              <slot name="footer"></slot>
            </div>`
    })
    const vm = new Vue({
      el: '#app',
      data: {
        msg: 'hello'
      }
    })
  </script>
</body>
</html>